草庐IT

c++ - Swig -includeall 除了...

全部标签

c++ - 这行代码是如何工作的?

所以我最近在看某人的代码,我发现编译器没有报错,也没有以下任何运行时错误:constchar*p="Ididn'tmalloc...";上面的代码有效,但我想知道如何。这就是我认为正在发生的事情。谁能证实这一点?所以“我没有malloc...”在编译时在堆栈上静态分配,地址被传递给指针p。类似于静态数组的分配方式。我对此有90%的把握,但一些确认会有所帮助。谢谢。 最佳答案 你有一个字符串文字"Ididn'tmalloc..."位于只读内存中的某处(确切地说是实现定义的位置),它由指针p指向。需要注意的重要一点是,任何更改此字符串文

c++ - 为什么 cout 的访问冲突和 printf 的堆栈溢出

我想知道为什么在下面的两个代码片段中,cout和printf会发生访问冲突和堆栈溢出。我想知道为什么第一个代码的访问冲突而不是堆栈溢出。我得到访问冲突的第一个代码:voidTest();voidTest(){staticinti=0;cout我得到StackOverflow的第二个代码:voidTest();voidTest(){staticinti=0;printf("%d\n",i++);Test();}intmain(){Test();return0;} 最佳答案 我假设您了解这两个函数在尝试无限递归后由于堆栈耗尽而崩溃。我认

c++ - 标记/编码指针

我需要一种方法将指针标记为集合x的一部分或集合y的一部分(即:标记只有2个“状态”),我的意思是可以假设未标记=x和标记=是的。目前我正在考虑使用按位异或来执行此操作:ptr^magic=encoded_ptrencoded_ptr^magic=ptr但我对如何确定指针是否首先被标记感到困惑。我用它来标记链表中的池节点来自哪些池节点,这样当它们被取消链接时,它们可以返回到正确的perants。更新只是为了让所有那些建议将标志存储在额外数据成员中的人清楚,我仅限于sizeof(void*),所以我不能添加新成员,否则我会。此外,池不是连续的,它们由许多页面组成,跟踪范围会增加太多开销(我

c++ - char * (*arr)[2 ] 和 char **array[2] 有何不同?

char*(*arr)[2]和char**array[2]有何不同??如果我使用函数传递char*strings[2]那么如何从问题第一部分提到的两种方式访问​​元素?还请告诉其他访问指针数组元素的方法。谢谢。 最佳答案 CDecl报告:char*(*arr)[2]declarearraspointertoarray2ofpointertochar和char**arr[2]declarearrasarray2ofpointertopointertochar只是[]数组声明符的优先级高于*指针限定符,所以括号改变了含义。

c++ - 如何正确使用malloc和free memory?

我想知道使用malloc和free的正确/标准方法是什么。free后是否需要设置指针为NULL?基本上,以下两种方式中哪一种是正确的?double*myPtr=(double*)malloc(sizeof(double)*5);.....free(myPtr);或double*myPtr=(double*)malloc(sizeof(double)*5);.....free(myPtr);myPtr=NULL;或者应该是其他方式使用malloc和free?谢谢。 最佳答案 两者都很好。唯一的区别是,如果您第二次尝试释放myPtr,前

c++ - 开发嵌入式软件库,C 还是 C++?

我正在开发一个软件库,用于嵌入式系统,如ARM芯片或TIDSP(主要用于嵌入式系统,但如果它也可以用于PC环境,那也很好).显然,这是一个相当广泛的目标系统,因此能够轻松地移植到不同的系统是一个优先事项。该库将用于与特定硬件的接口(interface)和运行一些算法。我认为C++是优于C的最佳选择,因为它更易于维护和阅读。我认为额外的开销对于能够在面向对象的范例中工作是值得的。如果我正在为一个非常具体的系统编写代码,我会使用C语言,但事实并非如此。我假设目前流行的嵌入式系统的大多数编译器都可以处理C++。这个对吗?我还应该考虑其他因素吗?我的思路正确吗? 最

c++ - 仅对 STL 容器使用 C++ 是一种不好的做法吗?

首先介绍一下背景......在下文中,我使用C、C++和Java编写(通用)算法,而不是带有界面的gui和花哨的程序,而是简单的命令行算法和库。我开始学习Java编程。我对Java非常满意,并且我学会了如何使用Java容器,因为它们往往会降低簿记的复杂性,同时保证出色的性能。我断断续续地用过C++,但我用它肯定不如用Java,而且感觉很麻烦。我对C++的了解还不足以在不查找每个函数的情况下使用它,所以我很快又回到了尽可能多地坚持使用Java。然后我突然转向汇编语言的破解和黑客攻击,因为我觉得我过于关注一种太高级的语言,我需要更多关于CPU如何与内存交互以及真正发生的事情的经验与1和0。

c++ - 为什么在C/C++中使用uint_8等?

我看过一些代码,它们不直接使用原始类型int、float、double等。他们通常typedef并使用它或使用类似的东西uint_8等现在真的有必要吗?或者C/C++是否足够标准化,最好直接使用int、float等。 最佳答案 因为char、short、int、long等类型是不明确的:它们依赖于底层硬件。在C基本上被认为是匆忙的人们的汇编语言的日子里,这没关系。现在,为了编写可移植的程序——这意味着“程序在任何机器上都具有相同的意义”——人们构建了特殊的typedefs和#defines库>允许他们做出独立于机器的定义。密码真的很

c++ - Signed Char的目的是什么

如果char和signedchar的范围都是-127-127,那么signedchar的用途是什么?我们在什么地方使用signedchar而不是仅使用char? 最佳答案 unsignedchar是无符号的。signedchar已签名。char可能是未签名的或已签名的,具体取决于您的平台。当您确实需要签名时,请使用signedchar。可能相关:Whatdoesitmeanforachartobesigned? 关于c++-SignedChar的目的是什么,我们在StackOverflo

c++ - SomeClass **ptr; 之间的区别和 SomeClass *ptr;

抱歉,这看起来像是一个菜鸟问题,但对Google来说却是一个真正的痛苦。我正在使用C++,虽然我可以通过指针和引用获得,但有时对我来说仍然很神秘。我有一些代码,类似于SomeClassName**pointer,我想知道为什么有两个星号而不是一个? 最佳答案 用图片来解释要容易得多,但我们还是试一试。如果您已经知道其中的一些内容,我们深表歉意。指针只是一个保存值的变量,就像int或char一样。使它成为指针的原因是该变量中的值是其他地方内存中的地址。示例更简单。假设我们有3个这样声明的变量:intiVar=42;//intint*p